package concoursbelote;

import java.util.Random;


public class Patronne extends ClientFemme
{
	//*********************************************************
	//			CONSTRUCTEURS
	//*********************************************************
	public Patronne(String prenom, String surnom, double porteMonnaie, double coteDePopularite, String criSignificatif, String boissonFavorite, String boissonFavoriteSecours,
			double degreAlcoolemie, int degreConsommation, int jourBanissement, String nomBijoux) 
	{
		super(prenom, surnom, porteMonnaie, coteDePopularite, criSignificatif, boissonFavorite, boissonFavoriteSecours, degreAlcoolemie, degreConsommation, jourBanissement, nomBijoux);
	}
	
	//*********************************************************
	//			METHODS
	//*********************************************************
	/**
	 * 
	 * Surchage de la méthode offrir_un_verre spécifique à la  patronne
	 * @author Shehu
	 */
    @Override
	public void offrirUnVerre()
	{
		Integer indexBoissonPatronne = new Integer(Administration.rechercheBoissonPatronne());
		System.out.println("<" + Administration.currentBar.getPatronne().getPrenom() + ">: Je vous offre un verre. Prenez ce que vous voulez. Et pour moi, ça sera " + Administration.currentBar.mesBoissons.get(indexBoissonPatronne).getEcriture() + Administration.currentBar.getPatronne().getBoissonFavorite());
	}
	
	@Override
	/**
	 * Surcharge de la méthode boire de la classe Humain. Cette méthode est spécifique à la Patronne
	 * @author Guillaume
	 */
	public void boire(int indexBoisson)
	{
		System.out.println("<" + Administration.currentBar.getPatronne().getPrenom() + "> A vôtre santé!");
		setDegreAlcoolemie(getDegreAlcoolemie() + Administration.currentBar.mesBoissons.get(indexBoisson).getDegreParVerre());
	}
	
	/**
	 * La patronne ordonne à un serveur de ne plus servir d'alcool au client désigner car il a trop bu
	 * @author Shehu
	 * @param indexClient
	 * @return index
	 */
	public int ordonner(int indexClient, int indexServeur)
	{
		System.out.println("<" + Administration.currentBar.getPatronne().getPrenom() + "> Ce client à trop bu. Ne lui sert plus d'alcool sinon, il va faire du dégat.");
		int index = Administration.refusDeServir(indexClient, indexServeur);
		return index;
	}
	
	/**
	 * La patronne paye le fournisseur
	 * @author Guillaume
	 * @param prix
	 */
	public void payer(Double prix)
	{
		Administration.currentBar.getPatronne().setPorteMonnaie(Administration.currentBar.getPatronne().getPorteMonnaie() - prix);
	}
	
	/**
	 * La patronne ordonne à un serveur homme de faire exclure un client qui commence à faire du dégat.
	 * @author Guillaume
	 * @param indexClient
	 * @param jourBanni
	 */
	public void faireExclure(int indexClient, int jourBanni)
	{
		Random rnd = new Random();
		int index_serveur = rnd.nextInt(Administration.currentBar.serveur.size());
		if(Administration.currentBar.serveur.get(index_serveur).getClass().getName().equalsIgnoreCase("concoursbelote.ServeurHomme"))
		{
			System.out.println("<" + Administration.currentBar.getPatronne().getPrenom() + "> " + Administration.currentBar.serveur.get(index_serveur).getPrenom() + ", vire moi celui-là. Il devient violent");
			((ServeurHomme) Administration.currentBar.serveur.get(index_serveur)).intimider(indexClient, jourBanni);
		}
		else
		{
			Administration.currentBar.getPatronne().faireExclure(indexClient, jourBanni);
		}
	}
	
	/**
	 * Permet à la patronne d'offrir une tournée générale
	 * @author Guillaume
	 */
	public void offrirUneTournee()
	{
		Integer boissonPatronne = new Integer(Administration.rechercheBoissonPatronne());
		Integer eau = new Integer(Administration.rechercheIndexEau());
		Integer boissonSansAlcool = new Integer(Administration.selectionBoissonSansAlcool());
		System.out.println("<" + Administration.currentBar.getPatronne().getPrenom() + "> J'OFFRE LA TOURNEE GENERALE!!!   Que voulez-vous???");
		for (int i = 0; i<Administration.currentBar.clients.size(); i++)
		{
			for( int j=0; j<Administration.currentBar.mesBoissons.size(); j++)
			{
				if(Administration.currentBar.mesBoissons.get(j).getNomBoisson().equalsIgnoreCase(Administration.currentBar.clients.get(i).getBoissonFavorite()))
				{
					if(Administration.currentBar.mesBoissons.get(j).getStocks() == 0)
					{
						j = Administration.currentBar.clients.get(i).changerBoisson(i);
					}
					Administration.currentBar.clients.get(i).commander(j, i);
					Administration.currentBar.getBarman().servirUnVerre(j);
					Administration.currentBar.clients.get(i).boire(j);
					break;
				}
			}
		}
		Administration.currentBar.getBarman().servirUnVerre(boissonPatronne);
		Administration.currentBar.getPatronne().boire(boissonPatronne);
		for (int i =0; i<Administration.currentBar.serveur.size(); i++)
		{
			Administration.currentBar.getBarman().servirUnVerre(eau);
			Administration.currentBar.serveur.get(i).boireDeLeau();
			Administration.currentBar.serveur.get(i).setCoteDePopularite(Administration.currentBar.serveur.get(i).getCoteDePopularite() + 1);
		}
		Administration.currentBar.getBarman().servirUnVerre(boissonSansAlcool);
		Administration.currentBar.getBarman().boire();
		Administration.currentBar.getBarman().setCoteDePopularite(Administration.currentBar.getBarman().getCoteDePopularite() + 1);
	}
}
